package com.qf3.service.impl;

import com.qf3.dao.OrderDao;
import com.qf3.service.OrderService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Service;

@Service
@PropertySource("classpath:bean.properties")  //通过这个属性源注解，指定要读取的那个properties配置文件的位置
public class OrderServiceImpl implements OrderService {

    /*
        Autowired查找对象的策略是：
            ① 先通过变量名称找  orderDao
            ② 如果名称找不到，根据类型找。如果找到唯一的一个，注入成功。如果找到多个，走③
            ③ 找到多个，看那个对象上有@Primary注解，如果只有一个对象有@Primary注解，注入成功。如果没有或者有多个，注入失败

        一旦使用了Qualifier注解，那么上述描述的Autowired的策略都失效
     */
//    @Autowired //内部通过反射进行对象的赋值
//    @Qualifier("orderDaoImpl") //按照名称找对象
    private OrderDao orderDao;   //相当于是xml的set注入

    @Value("${age}")
    private int age;


    public OrderServiceImpl(OrderDao orderDao) {  //相当于xml的构造注入,此处参数位置省略了@Autowired注解
        this.orderDao = orderDao;
    }

    @Override
    public String toString() {
        return "OrderServiceImpl{" +
                "orderDao=" + orderDao +
                ", age=" + age +
                '}';
    }
}
